[新機能]AWS Elastic BeanstalkがGoをサポートしました!
はじめに
AWS Elastic BeanstalkがGoをサポートしたことが発表されました!
これまではDocker、Java、.NET、Node.js、PHP、Python、Rubyがサポートされていましたが、新たにGoが加わったことになります。Elastic BeanstalkでのGoアプリケーションの実行では、Javaと同様にProcfileを使って複数のプロセスを実行することができます。コンパイルしたバイナリをサクっとアップロードすれば動くGolangは、Elastic Beanstalkと相性が良いと思います。
ということで、とりあえず実際にやってみました!
やってみた
以下のような、簡単なWebアプリケーションを書きました。5000/tcpポートで立ち上がって、アクセスしたら"Hello, Golang on EB."と返すだけです。
$ vi application.go package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, Golang on EB.") } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":5000", nil) }
./binというディレクトリを作り、buildして、出来上がったバイナリを./bin以下に配置します。
$ mkdir bin $ go build -o bin/application application.go $ ls -alF ./bin/application -rwxr-xr-x 1 smokeymonkey staff 5807380 9 29 17:18 application*
そしてzip圧縮します。
$ $ zip ../myapp.zip -r * updating: application.go (deflated 26%) updating: bin/ (stored 0%) updating: bin/application (deflated 71%)
さて、AWS管理コンソールでElastic Beanstalkの画面にアクセスします。以下の通り、"Go"が増えてますね。"Go"を指定してApplicationを作成します。
Applicationが作成されます。Default EnvironmentのDashboardから[Upload and Deploy]をクリックします。
先ほど作成したzipファイルをアップロードして、Deployします。
正常にデプロイが完了しました。
そしてElastic Beanstalk ApplicationのEnvironment URLにアクセスすると...はい、以下のようにGoアプリケーションが動いていることがわかります!
さいごに
もっと詳しい情報はDeploying Applications on the Go Platformに記載がありますが、すごく簡単にGoアプリケーションをElastic Beanstalkで動かすことができます。前述した通り複数のプロセスを起動することもできますし、オプションとしてNamespaceを定義することもできます。
今回のアップデートで、Elastic Beanstalkの使い道が広がるのではないでしょうか。